Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
ビデオ
https://scrapbox.io/files/653b69c73dc92e001c56b065.png
概要
Django ORMはSQLの知識がなくてもある程度のデータベース操作ができる便利な技術ですが、その知識だけでDB操作をしていると、気がつかないうちにとても効率の悪い実装をしてしまいます。Web開発からプログラミングを始めた人はWebフレームワークを使ってしばらくしてからDBに関心を持つようになる、何ならDBのことはあまり考えたくない、という方も多いのではないでしょうか。このDjango ORM道場では、そんな「Django ORMあるある」を正し、本来やりたかったはずの処理を効率良く行うことができるよう、基本の型を紹介します。
詳細
本トークでは、Djangoに内蔵されているDjango ORMによるデータ取得操作を扱っていきます。ほかのプログラミング言語や、ほかのWebフレームワークでは詳細は異なりますが、基本的な考え方は広く使えるはずです。
スポーツであれば鏡を見ながらトレーニングしたり、動画を撮って自分の動きやフォームを見ながら練習します。ソフトウェア開発も同じで、プログラムの実行結果を最後まで確認せずにコードを書くことはほとんどありません。ORMクエリの場合、「期待する値が取れたか」に注目してしまいがちですが、「ORMクエリが発行するSQL文」をよく観察する必要があります。試合の結果(実行結果や処理速度)だけ見るのではなく、そこに至る過程としてのフォーム(SQL文)を観察して磨いていくことが大事です。
本トークでは、道場主(コンサルタント)の立場から、「ORM利用の3つの基本」を押さえ、混乱してしまったDjango ORMコードをスッキリさせる方法を紹介します。アジェンダは以下の通りです
自己紹介と、このトークの背景(3分)
このORM、どんなSQLを実行しているの?(3分)
基本1:実行しているSQLをいつも確認しよう(5分)
基本2:意図しないタイミングでのSQL発行を避けよう(7分)
基本3:理想のSQLからORMを組もう(7分)
まとめと質疑応答(5分)
この題材を選んだ理由やきっかけ
本トークの内容は、開発現場で実際にあったコードレビューで出会い、レビュー指摘によって問題を解決した際の内容です。熟練者であれば「あーあるある」と言えるようなことでも、経験が無ければ勘所を掴むまでかなりの試行錯誤が必要になります。その問題に対して私の2020年のトーク(Django + SQLAlchemy: シンプルWay)では異なるアプローチで対処しました。今回は、熟練者の視点をDjango ORM道場の道場主(あるいはコンサルタント)に置き換えて、Djangoの中で完結させます。このトークが、多くのDjango利用者のあるある問題を解決するきっかけになればと思います。
オーディエンスが持って帰れる具体的な知識やノウハウ
1. Django ORMクエリが発行するSQL文を観察する技術
2. 意図しないタイミングでのSQL発行を避ける方法
3. 理想のSQLからORMを組む方法
4. Django ORMコードを整理し、効率的にするための具体的な手法
5. 経験豊富な開発者の視点で問題を理解し、解決するための思考方法
オーディエンスに求める前提知識
Pythonの基本的な知識
Django(またはWebフレームワーク)におけるORMの基本的な理解
最近のWebアプリ開発や、そのデバッグで苦労した経験
SQLのごくごく基礎的な知識(SELECTとJOIN)
データベースの基本的な概念と操作についての理解
オーディエンスのPythonレベル
初級、中級
発表資料の言語
日本語のみ
ネタ